Electronic memory comes in a variety of forms to serve a variety of purposes. Typically, a single electronic computing device includes several tiers of different memories. Such tiering philosophy in memory design helps maximize data storage for quick and easy access by powerful CPUs, while minimizing the memory cost.
Specific to handheld computing devices, many of them includes two kinds of memory, namely a Random Access Memory (RAM or DRAM) and programmable permanent memory. Generally, software applications are loaded, executed, and run in RAM. RAM is also used to receive data input by the user, as well as to display the application output or results to the user. The tasks of receiving data and displaying results are generally performed quickly in the RAM, allowing the user to input data freely, without the delay of storing the data in a more permanent memory. The amount of RAM available generally contributes to the perceived speed of the device. The speed of most RAM configurations, however, must be balanced with the risk of losing data or results. That is, RAM is sometimes called volatile memory because it requires a constant supply of electrical energy to maintain its data. As such, if the supply of electrical power is lost, the data in the RAM will also be lost.
Most types of permanent memory are non-volatile; that is, the permanent memory retains the data even if electrical power is lost. Most permanent memory is programmable, and thus suitable for storing software applications, and erasable, so that the memory can be re-programmed. Generally, selected data can be purposely stored in the permanent memory for later use. For example, the user might make ten quick data entries into the RAM, and then later store the data entries in the permanent memory.
In use, many portable electronic devices are subject to environmental forces, electronic failure, loss of power, and/or other catastrophic events that can automatically and abruptly erase the contents of the RAM. Once the input data stored in the RAM is lost, it cannot be recovered for storage in the permanent memory. Thus, there exists a need for a non-volatile memory to quickly receive and store data, even in the event of a total failure of the device from a catastrophic event, and to provide long-term storage of the data.
Currently, a block-accessed Flash memory is considered to an improved non-volatile memory implemented in portable computing devices. As a type of EEPROM, the Flash memory provides a non-volatile, lower power, low cost, and high-density storage device for programmable code and data. These characteristics make the Flash memory an optimal non-volatile memory device for embedded systems. However, the Flash memory also has a number of undesirable features when implemented in computing devices.
One problem is erase sectors. Unlike a RAM or ROM device, the individual bits of the Flash memory device (e.g. NAND Flash memory) can only be programmed in one direction and cannot be re-programmed without an erase operation. An erase operation for the Flash memory requires that a large section of bits, an erase sector, to be “flashed” or erased at the same time. Such an erase sector is typically 64 KB, but can range from 512 bytes to 512 KB, determined by the type of the Flash memory and how it is wired into the system. Additionally, the erase operations are quite slow, typically one half second or so, while a single byte can usually be programmed in about ten microseconds.
This sector-erasing feature of the Flash memory also makes it difficult to maintain data integrity. When using RAM or a conventional disk for storage, data of virtually any size can be written and re-written into the same location without any special handling. Since the Flash memory is not capable of re-writing individual bits of data, all data must be initially written, or re-written, into an unused area of the Flash memory. The original data must then be tracked to free up space in the memory for purposes of sector erasing. When data write and re-write operations are performed on the Flash device, the controlling software must protect the data at every state of the operation to ensure that the original and new data remain valid in the event of an interruption. Interruptions can be caused by several common conditions, such as unexpected power loss due to low battery or a user request to shut down.
Another aspect of the Flash memory that must be considered is its limited life expectancy. For any given Flash memory device, there is a limit to the total number of erase operations that may be performed on a particular erase sector before it becomes unreliable or damaged. Flash memory device lifetimes range from 10,000 write-erase cycles to 1,000,000 cycles, with most rated around 100,000. When an erase sector approaches its rated limit, it may take longer to perform certain operations or even begin to fail.
To combat the above-identified problems, some special types of software are provided to manage the Flash memory. One example is called a Flash media manager in the present market. To maximize the life cycle of a Flash device, the media manager introduces a process called wear leveling, which consists of ensuring all erase sectors within the Flash disk are used with the same frequency. Another process called garbage collection is deployed to reclaim space occupied by discarded data. This process selects an erase sector that has mostly discarded data, copies the valid data from that erase sector into the spare sector, and erases the previously valid erase sector making it the new spare sector. However, inclusion of any of the above-mentioned special software requires overhead space allocated in the Flash memory for storing data identifying/recording the status of the Flash memory, maintaining a file allocation table to track the location and status of stored data, and reserving spare space for garbage collection. Such overhead not only decreases the actual space for data storage, but also results in speed degradation in the Flash memory.
Therefore, there exists a need for a non-volatile memory that overcomes the deficiencies of a Flash memory and provides fast data storage. The emerging Non-Volatile Random Access Memory (NVRAM) appears to meet this need. An NVRAM is a special kind of RAM that retains data when the computer is turned off or there is a power failure. Similar to the computer's Read Only Memory (ROM), NVRAM is powered by a battery within the computer. When the power is turned on, the NVRAM operates just like any other RAM. When the power is turned off, the NVRAM draws enough power from the battery to retain its data. NVRAM is fairly common in embedded systems. However, NVRAM is much more expensive than other RAM because of the battery. Also, NVRAM is generally less dense than other RAM, particularly DRAM. Thus, its applications are typically limited to the storage of a few hundred bytes of system-critical information that cannot be stored in a better way.